package org.cloudlab.bean;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 文章实体类
 *
 * @author Liu Yicong
 * @date 2023/9/3
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("basic_paper")
public class Paper implements Serializable {

	@TableId(type = IdType.AUTO)
	private Long id;

	/**
	 * 文章缩写
	 */
	@TableField("acronym")
	private String acronym;

	/**
	 * 文章全名
	 */
	@TableField("paper_name")
	private String paperName;

	/**
	 * 文章方向
	 */
	@TableField("aims")
	private String aims;

	/**
	 * 当前投稿期刊Id
	 */
	@TableField(value = "sub_journal_id", updateStrategy = FieldStrategy.ALWAYS)
	private Long subJournalId;

	/**
	 * 当前投稿期刊名称
	 */
	@TableField(value = "sub_journal_name", updateStrategy = FieldStrategy.ALWAYS)
	private String subJournalName;

	/**
	 * 最近一次投稿日期
	 */
	@TableField(value = "sub_time", updateStrategy = FieldStrategy.ALWAYS)
	@JsonFormat(pattern = "yyyy-MM-dd")
	private Date subTime;

	/**
	 * 当前状态
	 */
	@TableField(value = "current_state", updateStrategy = FieldStrategy.ALWAYS)
	private String currentState;

	/**
	 * 详细状态
	 */
	@TableField(value = "state_details", updateStrategy = FieldStrategy.ALWAYS)
	private String stateDetails;

	/**
	 * 更新时间
	 */
	@TableField("update_time")
	@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
	private Date updateTime;

	/**
	 * 负责人Id
	 */
	@TableField("belong_user_id")
	private Long belongUserId;

	/**
	 * 负责人昵称
	 */
	@TableField("belong_nick_name")
	private String belongNickName;

//	/**
//	 * 投稿记录
//	 */
//	@TableField(exist = false)
//	private List<SubRecord> subRecords;

	/**
	 * 追踪链接
	 */
	@TableField("track_link")
	private String trackLink;

	/**
	 * 备注
	 */
	@TableField("others")
	private String others;

	/**
	 * 创建时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
	@TableField("create_time")
	private Date createTime;

	/**
	 * 创建人
	 */
	@TableField("create_user_id")
	private Long createUserId;

	/**
	 * 更新人
	 */
	@TableField("update_user_id")
	private long updateUserId;

	/**
	 * 是否删除
	 */
	@JsonIgnore//仅在后台数据库中存储, 不传送给前端
	@TableField("is_remove")
	private int isRemove;
}
